Структура System.Nullable<T>
В этой статье приводятся дополнительные замечания к справочной документации по этому API.
Класс Nullable представляет тип значения, который можно назначить null
.
Тип, как утверждается, имеет значение NULL, если он может быть назначен или может быть назначен null
. Это означает, что тип не имеет никакого значения. По умолчанию все ссылочные типы, например String, имеют значение NULL, но все типы значений, например Int32, не являются.
В C# и Visual Basic тип значения помечается как допускающий значение NULL с помощью ?
нотации после типа значения. Например, int?
в C# или Integer?
в Visual Basic объявляет целочисленный тип значения, который можно назначить null
.
Структура Nullable<T> поддерживает использование только типа значения в качестве типа, допускаемого значением NULL, так как ссылочные типы имеют значение NULL при проектировании.
Класс Nullable обеспечивает дополнительную поддержку Nullable<T> структуры. Класс Nullable поддерживает получение базового типа типа, допускающего значение NULL, и операции сравнения и равенства пар типов, допускающих значение NULL, базовый тип которого не поддерживает универсальные операции сравнения и равенства.
Основные свойства
Двумя основными элементами Nullable<T> структуры являются HasValue и Value свойства. HasValue Если свойство объекта Nullable<T> имеет значениеtrue
, значение объекта можно получить с помощью Value свойства. HasValue Если свойство имеет false
значение, значение объекта не определено, и попытка доступа к Value свойству вызывает исключениеInvalidOperationException.
Упаковка-преобразование и распаковка-преобразование
Если задан тип, допускающий значение NULL, среда CLR автоматически настраивает базовое значение Nullable<T> объекта, а не Nullable<T> сам объект. То есть, если HasValue свойство имеет true
значение, содержимое Value свойства отображается в поле. Если базовое значение типа, допускающего значение NULL, распаковано, среда CLR создает новую Nullable<T> структуру, инициализируемую базовому значению.
HasValue
Если свойство типа, допускающего значение NULL, результатом операции бокса являетсяfalse
null
. Следовательно, если тип, допускающий значение NULL, передается методу, который ожидает аргумент объекта, этот метод должен быть готов к обработке ситуации, в которой находится null
аргумент. При null
распаковки в тип, допускающий значение NULL, среда CLR создает новую Nullable<T> структуру и инициализирует его HasValue
свойство в false
.
Компоненты среды выполнения Windows
Тип можно включить Nullable<T> в состав структуры, экспортируемой в библиотеку WinMD.